As is known, two main problems are encountered when flash cells are erased, after application of one or more erase pulses, i.e., some of the cells are erased excessively, so that they have a negative threshold voltage (depleted cells); and after a long erase pulse the dispersion of the threshold voltages is large (up to approximately 3 V).
Furthermore, after erasing, in order to permit subsequently correct data storage, in particular if the memory is of the analog or multi-level type and storage of different digital values or analog values is involved, no depleted cells should be present, and the cells cannot have a threshold voltage which is lower than a specific value. The aforementioned requirements cannot be met when, in addition to cells which behave correctly, there are cells which, at each erase pulse, modify their threshold voltage too little, as well as cells which modify their threshold voltage excessively.
At present, erasing is carried out such that its duration is minimised, without imposing excessively narrow constraints on the final distribution of the threshold voltage. For this purpose, erasing is generally carried out by supplying erase pulses of a predetermined duration (for example 10 ms), each followed by an erase verify step on a subassembly of cells (which normally all belong to a whole row of the sector which is being erased). If at least one cell of the subassembly does not pass the verify step (since it has a threshold which is higher than a predetermined value), a new erase pulse is supplied. When all the cells of the subassembly pass the verify step, the entire sector is verified until a percentage near 100% (e.g., 98%) passes the verifying step. At the end of erasing, in order to recover depleted cells, a soft-programming pulse is generated (i.e., by supplying a gate voltage V.sub.G of 7 V, and a drain voltage V.sub.D of 7 V for a period of approximately 5 ms), blindly to all the cells.
However the above-described erase method cannot provide the requirements of dispersion amplitude and low average value necessary for analog or multi-level programming.